package com.hy.proxy.core.entity;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;

/**
 * @Author: hy
 * @Date: Created in 2019/10/25/21:05
 * @Description: 维护全局属性
 * @Version: 1.0
 */
public enum GlobalObject {

    /**
     * 实例
     */
    Instance;

    private final Map<Proxy.ProxyType, List<Proxy>> PROXY_MAP;

    public List<Proxy> getSsList() {
        return this.PROXY_MAP.get(Proxy.ProxyType.SS);
    }

    public List<Proxy> getSsrList() {
        return this.PROXY_MAP.get(Proxy.ProxyType.SSR);
    }

    public List<Proxy> getV2rayList() {
        return this.PROXY_MAP.get(Proxy.ProxyType.V2RAY);
    }

    public List<Proxy> getProxyListByProxyType(Proxy.ProxyType type) {
        return this.PROXY_MAP.get(type);
    }

    public void add(Proxy proxy) {
        Proxy.ProxyType proxyType = Proxy.ProxyType.valueOf(getObjectName(proxy).toUpperCase());
        this.PROXY_MAP.get(proxyType).add(proxy);
    }

    public String getObjectName(Object o) {
        return o.getClass().getSimpleName();
    }

    public void add(List<Proxy> proxyList) {

        //获取对象名称
        String objectName = proxyList.get(0).getClass().getSimpleName();

        //转换为对应的ProxyType
        Proxy.ProxyType proxyType = Proxy.ProxyType.valueOf(objectName.toUpperCase());

        //插入全部
        this.PROXY_MAP.get(proxyType).addAll(proxyList);

    }


    GlobalObject() {

        PROXY_MAP = new Hashtable<>();
        for (Proxy.ProxyType value : Proxy.ProxyType.values()) {
            PROXY_MAP.put(value, new ArrayList<>());
        }

    }
}